/*->h.key */


#define isshift akbd_pollsh()
#define isctrl  akbd_pollctl()



#define      PAGEUP       0x1B9F
#define SHFT_PAGEUP       0xB8F
#define CTRL_PAGEUP       0x7BF
#define  ACT_PAGEUP       0xFBF
#define CTSH_PAGEUP       0x13AF



#define      PAGEDOWN     0x1B9E
#define SHFT_PAGEDOWN     0xB8E
#define CTRL_PAGEDOWN     0x7BE
#define  ACT_PAGEDOWN     0xFBE
#define CTSH_PAGEDOWN     0x13AE



#define      CLEFT        0x18C
#define      CRIGHT       0x18D
#define      CDOWN        0x18E
#define      CUP          0x18F

#define SHFT_CLEFT        0x19C
#define SHFT_CRIGHT       0x19D
#define SHFT_CDOWN        0x19E
#define SHFT_CUP          0x19F

#define CTRL_CLEFT        0x1AC
#define CTRL_CRIGHT       0x1AD
#define CTRL_CDOWN        0x1AE
#define CTRL_CUP          0x1AF

#define CTSH_CLEFT        0x1BC
#define CTSH_CRIGHT       0x1BD
#define CTSH_CDOWN        0x1BE
#define CTSH_CUP          0x1BF


#define      COPY         0x18B
#define SHFT_COPY         0x19B
#define CTRL_COPY         0x1AB
#define CTSH_COPY         0x1BB
#define  ACT_COPY         0xDAB


#define      TAB          0x18A
#define SHFT_TAB          0x19A
#define CTRL_TAB          0x1AA
#define CTSH_TAB          0x1BA



#define      INSERT       0x1CD
#define SHFT_INSERT       0x1DD
#define CTRL_INSERT       0x1ED
#define CTSH_INSERT       0x1FD
#define  ACT_INSERT       0xDED


#define CTRL_A            0x1
#define CTRL_B            0x2
#define CTRL_C            0x3
#define CTRL_D            0x4
#define CTRL_E            0x5
#define CTRL_F            0x6
#define CTRL_G            0x7
#define CTRL_H            0x8
#define CTRL_I            0x9
#define CTRL_J            0xA
#define CTRL_K            0xB
#define CTRL_L            0xC
#define CTRL_N            0xE
#define CTRL_O            0xF
#define CTRL_P            0x10
#define CTRL_Q            0x11
#define CTRL_R            0x12
#define CTRL_S            0x13
#define CTRL_T            0x14
#define CTRL_U            0x15
#define CTRL_V            0x16
#define CTRL_W            0x17
#define CTRL_X            0x18
#define CTRL_Y            0x19
#define CTRL_Z            0x1A
#define ESCAPE            0x1B

             

#define      DEL          0x7F
#define CTRL_DEL          0x47F
#define CTSH_DEL          0x107F
#define SHFT_DEL          0x87F
#define  ACT_DEL          0xC7F


#define      HOME         0x1A1E
#define CTRL_HOME         0x61E
#define  ACT_HOME         0xE1E


#define      RETURN       0xD
#define SHFT_RETURN       0x80D
#define CTRL_RETURN       0x40D

#define      PRINTK       0x180
#define CTRL_PRINTK       0x190
#define  ACT_PRINTK       0xDA0




#define F1           0x181
#define F2           0x182
#define F3           0x183
#define F4           0x184
#define F5           0x185
#define F6           0x186
#define F7           0x187
#define F8           0x188
#define F9           0x189
#define F10          0x1CA
#define F11          0x1CB
#define F12          0x1CC




#define SHFT_F1      0x191
#define SHFT_F2      0x192
#define SHFT_F3      0x193
#define SHFT_F4      0x194
#define SHFT_F5      0x195
#define SHFT_F6      0x196
#define SHFT_F7      0x197
#define SHFT_F8      0x198
#define SHFT_F9      0x199
#define SHFT_F10     0x1DA
#define SHFT_F11     0x1DB
#define SHFT_F12     0x1DC





#define CTRL_F1           0x1A1
#define CTRL_F2           0x1A2
#define CTRL_F3           0x1A3
#define CTRL_F4           0x1A4
#define CTRL_F5           0x1A5
#define CTRL_F6           0x1A6
#define CTRL_F7           0x1A7
#define CTRL_F8           0x1A8
#define CTRL_F9           0x1A9
#define CTRL_F10          0x1EA
#define CTRL_F11          0x1EB
#define CTRL_F12          0x1EC




#define  ACT_F1           0xDA1
#define  ACT_F2           0xDA2
#define  ACT_F3           0xDA3
#define  ACT_F4           0xDA4
#define  ACT_F5           0xDA5
#define  ACT_F6           0xDA6
#define  ACT_F7           0xDA7
#define  ACT_F8           0xDA8
#define  ACT_F9           0xDA9
#define  ACT_F10          0xDEA
#define  ACT_F11          0xDEB
#define  ACT_F12          0xDEC



#define  ACT_SL           0xE0E
#define  ACT_BREAK        0xE1B



#define KASTERIX          0x1a2a
#define KHASH             0x1a23
#define KMINUS            0x1a2d
#define KPLUS             0x1a2b
#define KSLASH            0x1a2f
#define ENTER             0x1a0d
#define KPOINT            0x1a2e
#define K0                0x1a30
#define K1                0x1a31
#define K2                0x1a32
#define K3                0x1a33
#define K4                0x1a34
#define K5                0x1a35
#define K6                0x1a36
#define K7                0x1a37
#define K8                0x1a38
#define K9                0x1a39
#define NUMLOCK           0x1a22

#define BACKSPACE         0x1a08



extern int    codechar(char * string);
extern char * uncode(char * string,int byte);

typedef void (*keyhandler)(int *);   /* function to handle key presses */
typedef int  (*expandfn)(int);       /* expansion function */


extern  void keymacro(keyhandler,int * key);
extern  int  expandmacro(expandfn exfn,char * string);
extern  int  expandamacro(expandfn exfn,int n);
extern  int  convert(char * string,char * result,int * length,int maxlen);


extern void keyboard_on(int autorepeat);
extern void keyboard_off(void);
extern void keyboardoncaret(int set);

extern int  keyexpand(int * key,int * pass);


extern int    keytype(char * string);
extern char * keystring(int code);




typedef struct
{
 char name[12];
 int  type;
 int  defn;
 int  flags;
} macro;


#define MACINUSE 0x1


extern macro * macros;        /* holds header for each macro */
extern char  * mstrings;      /* holds macro strings */

extern int     macrostot; 


extern void macrosredraw(void);
extern void macrosicon(void);
extern void macrosshow(void);
extern void macrosboot(void);
extern void macroskey(int * key);
extern void macrosclose(void);
extern void macrosdecode(int m2,int m3,int m4,int m5);
extern int  findmacro(char * name,int type);

extern int  macrorecorder(int ch);
extern void macrosc(int gain);

extern void delallmacros(int fp);
extern void delmacro(int fp);
extern void defmacro(int fp);

extern int  macrossave(char * filename);
extern void savedefaultmacros(void);

extern int  setusermacros(void);            /** these are in c.dir **/
extern int  usermacros(void);               /**                    **/
extern os_error * decodeusermacro(int m);   /**                    **/
extern void os3keypatch(void);
